#include <bits/stdc++.h>

using namespace std;

class Solution
{
public:
    // vector<int> twoSum(vector<int> &nums, int target)
    // {
    //     vector<int> res;
    //     int length = nums.size();
    //     for (int i = 0; i < length - 1; i++)
    //     {
    //         for (int j = i + 1; j < length; j++)
    //         {
    //             if (nums[i] + nums[j] == target)
    //             {
    //                 res.push_back(i);
    //                 res.push_back(j);
    //             }
    //         }
    //     }
    //     return res;
    // }

    vector<int> twoSum(vector<int> &nums, int target)
    {
        unordered_map<int, int> map;
        int length = nums.size();
        for (int i = 0; i < length; i++)
        {
            if (map.find(target - nums[i]) != map.end())
            {
                auto it = map.find(target - nums[i]);
                return vector<int>{i, it->second};
            }
            else
            {
                map.insert(pair<int, int>(nums[i], i));
            }
        }
        return vector<int>{};
    }
};

int main()
{
    vector<int> vec{3,2,4};
    Solution sol;
    vector<int> res = sol.twoSum(vec, 6);
    for (auto num : res)
    {
        cout << num << " ";
    }
    cout << endl;
    return 0;
}